package com.bbzn.device.client.service.emq;

import com.bbzn.device.client.dto.ct.request.RequestCancelCommand;
import com.ctg.ag.sdk.biz.aep_device_command.CancelCommandResponse;
import com.ctg.ag.sdk.biz.aep_device_command.QueryCommandListResponse;
import com.ctg.ag.sdk.biz.aep_device_command.QueryCommandResponse;

/**
 * 指令下发
 *
 * @Author wulongbo
 * @Date 2021/9/11 11:02
 * @Version 1.0
 */

public interface OrderSendBaseService {

    /**
     * 取消指令
     *
     * @param masterKey
     * @param requestCancelCommand
     * @return
     * @throws Exception
     */
    CancelCommandResponse cancelCommand(String masterKey, RequestCancelCommand requestCancelCommand) throws Exception;


    /**
     * 查询单个指令详情
     *
     * @param masterKey MasterKey在该设备所属产品的概况中可以查看
     * @param commandId 创建指令成功响应中返回的id
     * @param productId 产品ID
     * @param deviceId  设备ID
     * @return
     * @throws Exception
     */
    QueryCommandResponse queryCommand(String masterKey, String commandId, Integer productId, String deviceId) throws Exception;

    /**
     * 批量查询指令详情
     * @param masterKey MasterKey在该设备所属产品的概况中可以查看
     * @param productId 产品ID
     * @param deviceId  设备ID
     * @param startTime 日期格式，年月日时分秒，例如：20200801120130
     * @param endTime   日期格式，年月日时分秒，例如：20200801120130
     * @param pageNow   当前页数
     * @param pageSize  每页记录数，最大40
     * @return
     * @throws Exception
     */
    QueryCommandListResponse queryCommandList(String masterKey, Integer productId, String deviceId, String startTime, String endTime, int pageNow, int pageSize) throws Exception;

    /**
     * lwm2m协议有profile指令下发接口
     *
     * @param masterKey
     * @param requestCreateCommandM2M
     * @return
     * @throws Exception
     */
//    CreateCommandLwm2mProfileResponse commandLwm2mProfile(String masterKey, RequestCreateCommandM2M requestCreateCommandM2M) throws Exception;
}
